package io;

import java.io.*;

/**
 * 缓冲流：是一对高级流，作用是加快读写效率
 * BufferedInputStream缓冲输入流
 * BufferedOutputStream缓冲输出流
 *  1.缓冲流内部有一个8kb的字节数组，缓冲流底层转换成块读写了
 *  2.缓冲流何时用才有意义：
 *    不用的高级流有不同的功能，但只有缓冲流才具有加速功能（块读写）
 *    其他的高级流不具备加速功能，都是单字节读写
 *    此时若又想先完成功能再加速处理，则需要流连接，将功能流连到缓冲流上
 *
 * */
public class CopyDemo3Buffered {
    public static void main(String[] args) throws IOException {
        FileInputStream fis  =new FileInputStream("youdao.jpg");
        BufferedInputStream bis = new BufferedInputStream(fis);

        FileOutputStream fos = new FileOutputStream("youdao_缓冲流复制.jpg");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        int d ;
        long start = System.currentTimeMillis();
        while ((d = bis.read()) != -1){ //使用缓冲流读取字节
            bos.write(d);//使用缓冲流写出字节，即复制到想要的文件中
        }
        long end = System.currentTimeMillis();
        System.out.println("耗时："+(end - start)+"ms");
        bis.close();//只需关高级流，因为高级流中先关了低级流
        bos.close();
    }
}
